#pragma once
#include "../util/Notify.h"

#ifdef _WIN32
#define UIHAND HWND
#endif

typedef boost::signals2::connection UISignal;

class GuiObject
{
public:
	enum{
		ON_CLICK,
		ON_CREATE,
		ON_DESTROY
	};
	
public:
	GuiObject();
	virtual ~GuiObject();
public:
	virtual UISignal AddSignal(uint eventID, Notify::NotifyCallback callback);
public:
	virtual UIHAND GetUIHand()  = 0;
	virtual void SetUIHand(UIHAND uiHand) = 0;
	virtual void SetParent(GuiObject* parent) = 0;
	virtual GuiObject* GetParent() = 0;
	virtual void AddChild(GuiObject& child) = 0;
	virtual list<GuiObject&> GetChildren() = 0;
	virtual bool IsCreated() = 0;
};
